repo: Add ostree_repo_get_dfd()
authorColin Walters <walters@verbum.org>
Wed, 2 Mar 2016 02:52:22 +0000 (21:52 -0500)
committerColin Walters <walters@verbum.org>
Wed, 2 Mar 2016 02:52:22 +0000 (21:52 -0500)
I plan to use this in rpm-ostree at least for two reasons:
 - To find the mtime on the repo
 - To use the tmp/ directory to stage content (but we should eventually
   add a better API)

src/libostree/libostree.sym
src/libostree/ostree-repo.c
src/libostree/ostree-repo.h

index ee6c2e7650ec2a0e7c0f7dc8041398e57bcea5f7..ce8861f9aaeddfbbebf8f9c7e67860634a48e138 100644 (file)
@@ -311,3 +311,8 @@ global:
 local:
        *;
 };
+
+LIBOSTREE_2016.4 {
+global:
+        ostree_repo_get_dfd;
+} LIBOSTREE_2016.3;
index 3b08d445f3e70a8a0da603e28fa3ed86da88fe15..752e097a55374b476db090ded12cec3d6266afc0 100644 (file)
@@ -2423,6 +2423,24 @@ ostree_repo_get_path (OstreeRepo  *self)
   return self->repodir;
 }
 
+/**
+ * ostree_repo_get_dfd:
+ * @self: Repo
+ *
+ * In some cases it's useful for applications to access the repository
+ * directly; for example, writing content into `repo/tmp` ensures it's
+ * on the same filesystem.  Another case is detecting the mtime on the
+ * repository (to see whether a ref was written).
+ *
+ * Returns: File descriptor for repository root - owned by @self
+ */
+int
+ostree_repo_get_dfd (OstreeRepo  *self)
+{
+  g_return_val_if_fail (self->repo_dir_fd != -1, -1);
+  return self->repo_dir_fd;
+}
+
 OstreeRepoMode
 ostree_repo_get_mode (OstreeRepo  *self)
 {
index 288dca0c20edcc26c013cd24f70d056582ac5230..b8399b1733ff545fa6ddeaacab8e6f386ddd8ed7 100644 (file)
@@ -82,6 +82,9 @@ gboolean      ostree_repo_create (OstreeRepo     *self,
 _OSTREE_PUBLIC
 GFile *       ostree_repo_get_path (OstreeRepo  *self);
 
+_OSTREE_PUBLIC
+int           ostree_repo_get_dfd (OstreeRepo  *self);
+
 _OSTREE_PUBLIC
 OstreeRepoMode ostree_repo_get_mode (OstreeRepo  *self);